/* eslint-disable */

const { promisify } = require('util');

// 导入fs模块
const fs = require('fs');
// 导入path模块
const path = require('path');

const readdir = promisify(fs.readdir);
const stat = promisify(fs.stat);

// 遍历目录
// rootDir: 要遍历的目录
// callback: 回调函数
function walkDir(rootDir, callback) {
    // 根据文件路径读取文件，返回文件列表
    return readdir(rootDir).then((files) => {
        // 遍历读取到的文件列表
        files = files.map((filename) => {
            // 获取当前文件的绝对路径
            let fileDir = path.join(rootDir, filename);
            // 根据文件路径获取文件信息，返回一个fs.Stats对象
            return stat(fileDir).then((status) => {
                // 是目录
                let isDir = status.isDirectory();
                // 递归，如果是文件夹，就继续遍历该文件夹下面的文件
                if (isDir) {
                    return walkDir(fileDir, callback);
                }

                // 是文件
                let isFile = status.isFile();
                if (isFile) {
                    !!callback && callback(fileDir)
                }
            });
        });
        return Promise.all(files);
    });
}

const Utils = {
    toCss: walkDir
}

module.exports = Utils;